﻿using System;

namespace SharedTypes
{
    /// <summary>
    /// Атрибут, предоставляющий базовую информацию о параметре метода исполнительного файла.
    /// Область применимости - свойства.
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public class ParameterAttribute : Attribute
    {
        /// <summary>
        /// Тип параметра.
        /// </summary>
        public Type ParamType { get; private set; }

        /// <summary>
        /// Минимальное значение параметра.
        /// </summary>
        public object MinimumValue { get; private set; }

        /// <summary>
        /// Максимальное значение параметра.
        /// </summary>
        public object MaximumValue { get; private set; }

        /// <summary>
        /// Описание.
        /// </summary>
        public string Description { get; private set; }

        /// <summary>
        /// Порядковый номер параметра.
        /// </summary>
        public int OrderNum { get; private set; }

        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="paramType">Типа параметра.</param>
        /// <param name="order">Порядковый номер.</param>
        /// <param name="minValue">Минимальное значение.</param>
        /// <param name="maxValue">Максимальное значение.</param>
        /// <param name="descr">Описание.</param>
        public ParameterAttribute(Type paramType, int order, object minValue, object maxValue, string descr)
        {
            ParamType = paramType;
            MinimumValue = minValue;
            MaximumValue = maxValue;
            Description = descr;
            OrderNum = order;
        }
    }
}
